Organizations produce large amounts of data and are continually looking for ways to analyze and interpret such data. For example, an organization may use analytics or business intelligence systems to report on various trends that are of interest to the organization.
Traditional business intelligence solutions provide ways to produce filtered reports. An example of a filtered report could be a report that charts documents authored by a specific individual. Traditional business intelligence solutions implement filtering by allocating a database column to each filterable field, such as a document author field. When using large datasets, which may be typical, generation of such filtering (which may be performed on an ad-hoc basis) can be costly in terms of computing resources, and may be too costly to perform on a real-time or near-real-time basis.
In order to improve performance, traditional business intelligence solutions use a number of aggregation and pre-computation techniques. For example, counts of specific filterable fields can be maintained on an ongoing basis, such as a count of document authors. However, such techniques used by traditional business intelligence solutions suffer from limitations, such as a restriction on the number of filterable fields (e.g., to only those pre-defined fields for which counts are maintained) or ranges of criteria. In addition, changing or modifying available filterable fields can be difficult and time-consuming.
Therefore, there exists ample opportunity for improvement in technologies related to analyzing and interpreting data.